#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef int ElemType;
typedef struct{
    ElemType *elem;
    int TableLen;
}SSTable;

void ST_Init(SSTable &sst,int len)//申请空间，并进行随机数生成
{
    sst.TableLen=len;
    sst.elem=(ElemType *)malloc(sizeof(ElemType)*sst.TableLen);
    int i;
    srand(time(NULL));
    for(i=0;i<sst.TableLen;i++)
    {
        sst.elem[i]=rand()%100;
    }
}
void ST_Print(SSTable ST)
{
    for(int i=0;i<ST.TableLen;i++)
    {
        printf("%3d",ST.elem[i]);
    }
    printf("\n");
}

void swap(ElemType &a,ElemType &b)
{
    ElemType tmp;
    tmp=a;
    a=b;
    b=tmp;
}

void Selection_Sort(ElemType arr[], int n)
{
    int i,j,min;//min记录最小的元素的下标
    for(i=0;i<n;i++)
    {
        min=i;//我们认为0号元素是最小的
        for(j=i+1;j<n;j++)//找到从i开始到最后的序列的最小值的下标
        {
            if(arr[j]<arr[min])//当某个元素arr[j]小于了最小元素
            {
                min = j;//将下标j赋值给min，min就记录下来了最小值的下标
            }
        }
        swap(arr[i],arr[min]);
    }
}

int main()
{
    SSTable sst;
    ST_Init(sst, 10);
    ST_Print(sst);
    Selection_Sort(sst.elem, 10);
    ST_Print(sst);

    return 0;
}
